home *** CD-ROM | disk | FTP | other *** search
/ Hot Super Models / Hot Super Models.iso / unix / x11 / xv200.tar / xv-2.00 / xvdflt.c < prev    next >
C/C++ Source or Header  |  1992-01-02  |  4KB  |  160 lines

  1. /*
  2.  * xvdflt.c - load routine for 'default' XV image
  3.  *
  4.  * LoadDfltPic()  -  loads up 'pic'  note:  can't fail(!)
  5.  */
  6.  
  7.  
  8. /*
  9.  * Copyright 1989, 1990, 1991, 1992 by John Bradley and
  10.  *                       The University of Pennsylvania
  11.  *
  12.  * Permission to use, copy, and distribute for non-commercial purposes,
  13.  * is hereby granted without fee, providing that the above copyright
  14.  * notice appear in all copies and that both the copyright notice and this
  15.  * permission notice appear in supporting documentation. 
  16.  *
  17.  * The software may be modified for your own purposes, but modified versions
  18.  * may not be distributed.
  19.  *
  20.  * This software is provided "as is" without any expressed or implied warranty.
  21.  *
  22.  * The author may be contacted via:
  23.  *    US Mail:   John Bradley
  24.  *               GRASP Lab, Room 301C
  25.  *               3401 Walnut St.  
  26.  *               Philadelphia, PA  19104
  27.  *
  28.  *    Phone:     (215) 898-8813
  29.  *    EMail:     bradley@cis.upenn.edu       
  30.  */
  31.  
  32.  
  33. #include "xv.h"
  34.  
  35. #include "bitmaps/xvpic_logo"
  36. #include "bitmaps/xvpic_jhb"
  37. #include "bitmaps/xvpic_rev"
  38. #include "bitmaps/xf_left"
  39. #include "bitmaps/xf_right"
  40.  
  41. #define DWIDE 320
  42. #define DHIGH 200
  43.  
  44. /* local function defs */
  45. #ifdef __STDC__
  46. static void setcolor(int, int, int, int);
  47. static void gen_bg();
  48. #else
  49. static void setcolor(), gen_bg();
  50. #endif
  51.  
  52.  
  53. /*******************************************/
  54. void LoadDfltPic()
  55. /*******************************************/
  56. {
  57.   /* load up the stuff XV expects us to load up */
  58.  
  59.   SetDirRButt(F_FORMAT, F_GIF);
  60.   SetDirRButt(F_COLORS, F_FULLCOLOR);
  61.  
  62.   SetISTR(ISTR_FORMAT,"<internal>");
  63.   sprintf(formatStr, "%dx%d internal image.",DWIDE, DHIGH);
  64.  
  65.   pic = (byte *) calloc(DWIDE * DHIGH,1);
  66.   if (!pic) FatalError("couldn't malloc 'pic' in LoadDfltPic()");
  67.  
  68.   pWIDE = DWIDE;  pHIGH = DHIGH;
  69.  
  70.   xbm2pic(xvpic_logo_bits, xvpic_logo_width, xvpic_logo_height, 
  71.        pic, pWIDE, pHIGH, DWIDE/2, 60, 100);
  72.  
  73.   xbm2pic(xvpic_jhb_bits, xvpic_jhb_width, xvpic_jhb_height, 
  74.        pic, pWIDE, pHIGH, pWIDE/2, 130, 101);
  75.  
  76.   xbm2pic(xf_right_bits, xf_right_width, xf_right_height, 
  77.        pic, pWIDE, pHIGH, DWIDE/2 - 100, 134, 101);
  78.   xbm2pic(xf_left_bits, xf_left_width, xf_left_height, 
  79.        pic, pWIDE, pHIGH, DWIDE/2 + 100, 134, 101);
  80.  
  81.   xbm2pic(xvpic_rev_bits, xvpic_rev_width, xvpic_rev_height, 
  82.        pic, pWIDE, pHIGH, DWIDE/2, 180, 102);
  83.  
  84.  
  85.   setcolor(0, 80,80,150);
  86.   gen_bg();
  87.  
  88.   /* set up colormap */
  89.   setcolor(100, 224,163,255);   /* XV */
  90.   setcolor(101, 191,121,209);   /* jhb + fish */
  91.   setcolor(102, 186,122,204);   /* revdate */
  92. }
  93.  
  94.  
  95.  
  96. /*******************************************/
  97. void xbm2pic(bits, bwide, bhigh, pic, pwide, phigh, cx, cy, col)
  98.      char *bits;
  99.      byte *pic;
  100.      int   bwide, bhigh, pwide, phigh, cx, cy, col;
  101. /*******************************************/
  102. {
  103.   /* draws an X bitmap into an 8-bit 'pic'.  Only '1' bits from the bitmap
  104.      are drawn (in color 'col').  '0' bits are ignored */
  105.  
  106.   int     i, j, k, bit, x, y;
  107.   byte   *pptr, *bptr;
  108.  
  109.   y = cy - bhigh/2;
  110.  
  111.   for (i=0; i<bhigh; i++,y++) {
  112.     if ( (y>=0) && (y<phigh) ) {
  113.       pptr = pic + y * pwide;
  114.       bptr = (byte *) bits + i * ((bwide+7)/8);
  115.       x = cx - bwide/2;
  116.  
  117.       for (j=0,bit=0; j<bwide; j++, bit = (++bit)&7, x++) {
  118.     if (!bit) k = *bptr++;
  119.     if ( (k&1) && (x>=0) && (x<pwide))
  120.       pptr[x] = col;
  121.  
  122.     k = k >> 1;
  123.       }
  124.     }
  125.   }
  126. }  
  127.  
  128.  
  129. /*******************************************/
  130. static void setcolor(i, rv, gv, bv)
  131. int i, rv, gv, bv;
  132. {
  133.   r[i] = rv;
  134.   g[i] = gv;
  135.   b[i] = bv;
  136. }
  137.  
  138.  
  139. /*******************************************/
  140. static void gen_bg()
  141. {
  142.   int i,j;
  143.   byte *pp;
  144.  
  145.   pp = pic;
  146.   for (i=0; i<pHIGH; i++)
  147.     for (j=0; j<pWIDE; j++, pp++) {
  148.       if (*pp == 0) {
  149.     *pp = ((i+j) * 64) / (pHIGH + pWIDE);
  150.       }
  151.     }
  152.   
  153.   for (i=0; i<64; i++) {
  154.     setcolor(i, 120 - ((i*120)/64),
  155.                 120 - ((i*120)/64),
  156.                 160 - ((i*60)/64) );
  157.   }
  158. }
  159.  
  160.